﻿Public Class xtf_ABMbanco
    Dim frm_listado As Object = Nothing
    Dim ulg_row As DataRow
    Dim obj_banco As cls_banco_ = Nothing

    Public Sub New()
        InitializeComponent()
        CargarCondicionIva_()
        CargarTipoDocumento_()
        CargarCategoria_()
        CargarAgrupacion_()
        btn_Acceso.Visible = True
        liv_Direcciones.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        liv_Emails.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        liv_Telefonos.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        liv_TerceroRelaciones.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        liv_Usuarios.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        liv_TerceroSubCategorias.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        liv_TerceroAgrupaciones.Tag = New DevExpress.XtraEditors.Controls.ListBoxItemCollection
        AgregarValidaciones()
        Dim obj_config_parametro As New cls_config_parametro_
        lbl_subcodigo1.Text = obj_config_parametro.obtener("nombreSubCodigo1")
        lbl_subcodigo2.Text = obj_config_parametro.obtener("nombreSubCodigo2")
        lbl_subcodigo3.Text = obj_config_parametro.obtener("nombreSubCodigo3")
    End Sub

    Public Overrides Sub CargarObjetos()
        CargarCondicionIva_()
        CargarTipoDocumento_()
        'CargarTipo_()
        CargarCategoria_()
        CargarAgrupacion_()
    End Sub

    Private Sub CargarAgrupacion_()
        liv_Agrupaciones.Items.Clear()
        Dim Agrupacion_ As New cls_agrupacion_
        If Agrupacion_.CargarTodos Then
            For Each Agrupacion As cls_agrupacion_ In Agrupacion_.Items
                Dim Elemento As New CustomListItem
                Elemento.objeto = Agrupacion
                Elemento.text = Agrupacion.ToString
                liv_Agrupaciones.Items.Add(Elemento)
            Next
            liv_Agrupaciones.Enabled = True
        Else
            liv_Agrupaciones.Enabled = False
        End If
    End Sub

    Private Sub CargarCategoria_()
        liv_Categorias.Items.Clear()
        Dim categoria_ As New cls_categoria_
        If categoria_.CargarTodos Then
            For Each categoria As cls_categoria_ In categoria_.Items
                Dim Elemento As New CustomListItem
                Elemento.objeto = categoria
                Elemento.text = categoria.ToString
                liv_Categorias.Items.Add(Elemento)
            Next
            liv_Categorias.Enabled = True
        Else
            liv_Categorias.Enabled = False
        End If
    End Sub

    Private Sub CargarSubCategoria_()
        If liv_Categorias.SelectedItems.Count > 0 Then
            liv_SubCategorias.Items.Clear()
            Dim subcategoria_ As New cls_subcategoria_
            If subcategoria_.CargarXidcategoria(CType(liv_Categorias.SelectedItems(0).objeto, cls_categoria_).idcategoria) Then
                For Each subcategoria As cls_subcategoria_ In subcategoria_.Items
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = subcategoria
                    Elemento.text = subcategoria.ToString
                    liv_SubCategorias.Items.Add(Elemento)
                Next
                liv_SubCategorias.Enabled = True
            Else
                liv_SubCategorias.Enabled = False
            End If
        End If
    End Sub

    Private Sub CargarCondicionIva_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_CondicionFiscal.EditValue

        Dim condicioniva_ As New cls_condicioniva_
        condicioniva_.CargarTodos()
        cargarCombo(cbo_CondicionFiscal, condicioniva_.Items)
        cbo_CondicionFiscal.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_CondicionFiscal.EditValue)
    End Sub

    Private Sub CargarTipoDocumento_()
        Dim tmp_obj As Integer = 0
        tmp_obj = cbo_TipoDocumento.EditValue

        Dim tipodocumento_ As New cls_tipodocumento_
        tipodocumento_.CargarTodos()
        cargarCombo(cbo_TipoDocumento, tipodocumento_.Items)
        cbo_TipoDocumento.EditValue = IIf(tmp_obj <> 0, tmp_obj, cbo_TipoDocumento.EditValue)
    End Sub

    Public Shadows Sub Nuevo(ByRef listado As Form)
        Try
            frm_listado = listado
            Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - Nuevo"
            obj_banco = New cls_banco_
            btn_Registro.Enabled = False
            btn_Acceso.Enabled = False

            Me.Show()
        Catch ex As Exception
            'Dim frmError As New frm_ErrorManager(ex.Message)
        End Try
    End Sub

    Public Shadows Sub Modificar(ByRef banco As cls_banco_, ByRef listado As Form, ByRef row As DataRow)
        If IsNothing(obj_banco) Then
            obj_banco = New cls_banco_
        End If
        obj_banco = banco
        frm_listado = listado
        ulg_row = row : bbi_imprimir.Enabled = True

        Me.Text = CType(frm_listado, xtf_ListadoBase).lbl_modulo.Text & " - " & obj_banco.ToString
        txt_ID.Text = obj_banco.idbanco
        txt_Nombres.Text = obj_banco.tercero.nombres
        txt_Apellido.Text = obj_banco.tercero.apellido
        txt_NumeroFiscal.Text = obj_banco.tercero.numerofiscal
        txt_NumeroDocumento.Text = obj_banco.tercero.numeroducumento
        txt_SitioWeb.Text = obj_banco.tercero.web
        txt_Observaciones.Text = obj_banco.tercero.observaciones
        txt_Notas.Text = obj_banco.tercero.notas
        cbo_CondicionFiscal.EditValue = obj_banco.tercero.idcondicioniva
        cbo_TipoDocumento.EditValue = obj_banco.tercero.idtipodocumento

        txt_subcodigo1.Text = obj_banco.tercero.subcodigo1
        txt_subcodigo2.Text = obj_banco.tercero.subcodigo2
        txt_subcodigo3.Text = obj_banco.tercero.subcodigo3

        liv_Direcciones.Items.Clear()
        liv_Direcciones.Tag.Clear()
        If Not IsNothing(obj_banco.tercero.direccion_) Then
            If Not IsNothing(obj_banco.tercero.direccion_.Items) Then
                For Each direccion As cls_direccion_ In obj_banco.tercero.direccion_.Items
                    Dim Item As New DevExpress.XtraEditors.Controls.ImageListBoxItem
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = direccion
                    Elemento.text = direccion.ToString
                    If direccion.primario Then
                        Item.ImageIndex = 0
                        If Not IsNothing(direccion.pais) Then
                            If Not IsNothing(direccion.pais.siglafiscal) Then
                                txt_SiglaFiscal.Text = direccion.pais.siglafiscal.ToString
                            End If
                        Else
                            txt_SiglaFiscal.Text = ""
                        End If
                    End If
                    Item.Value = Elemento
                    liv_Direcciones.Items.Add(Item)
                Next
            End If
        End If

        liv_Telefonos.Items.Clear()
        liv_Telefonos.Tag.Clear()
        If Not IsNothing(obj_banco.tercero.telefono_) Then
            If Not IsNothing(obj_banco.tercero.telefono_.Items) Then
                For Each telefono As cls_telefono_ In obj_banco.tercero.telefono_.Items
                    Dim Item As New DevExpress.XtraEditors.Controls.ImageListBoxItem
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = telefono
                    Elemento.text = telefono.ToString
                    If telefono.primario Then
                        Item.ImageIndex = 0
                    End If
                    Item.Value = Elemento
                    liv_Telefonos.Items.Add(Item)
                Next
            End If
        End If

        liv_Emails.Items.Clear()
        liv_Emails.Tag.Clear()
        If Not IsNothing(obj_banco.tercero.email_) Then
            If Not IsNothing(obj_banco.tercero.email_.Items) Then
                For Each email As cls_email_ In obj_banco.tercero.email_.Items
                    Dim Item As New DevExpress.XtraEditors.Controls.ImageListBoxItem
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = email
                    Elemento.text = email.ToString
                    If email.primario Then
                        Item.ImageIndex = 0
                    End If
                    Item.Value = Elemento
                    liv_Emails.Items.Add(Item)
                Next
            End If
        End If

        liv_TerceroRelaciones.Items.Clear()
        liv_TerceroRelaciones.Tag.Clear()
        If Not IsNothing(obj_banco.tercero.tercerorelacion_) Then
            If Not IsNothing(obj_banco.tercero.tercerorelacion_.Items) Then
                For Each tercerorelacion As cls_tercerorelacion_ In obj_banco.tercero.tercerorelacion_.Items
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = tercerorelacion
                    Elemento.text = tercerorelacion.ToString
                    liv_TerceroRelaciones.Items.Add(Elemento)
                Next
            End If
        End If

        liv_Usuarios.Items.Clear()
        liv_Usuarios.Tag.Clear()
        If Not IsNothing(obj_banco.tercero.usuario_) Then
            If Not IsNothing(obj_banco.tercero.usuario_.Items) Then
                For Each usuario As cls_usuario_ In obj_banco.tercero.usuario_.Items
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = usuario
                    Elemento.text = usuario.ToString
                    liv_Usuarios.Items.Add(Elemento)
                Next
            End If
        End If

        liv_TerceroSubCategorias.Items.Clear()
        liv_TerceroSubCategorias.Tag.Clear()
        If Not IsNothing(obj_banco.tercero.tercerosubcategoria_) Then
            If Not IsNothing(obj_banco.tercero.tercerosubcategoria_.Items) Then
                For Each tercerosubcategoria As cls_tercerosubcategoria_ In obj_banco.tercero.tercerosubcategoria_.Items
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = tercerosubcategoria
                    Elemento.text = tercerosubcategoria.ToString
                    liv_TerceroSubCategorias.Items.Add(Elemento)
                Next
            End If
        End If

        liv_TerceroAgrupaciones.Items.Clear()
        liv_TerceroAgrupaciones.Tag.Clear()
        If Not IsNothing(obj_banco.tercero.terceroagrupacion_) Then
            If Not IsNothing(obj_banco.tercero.terceroagrupacion_.Items) Then
                For Each terceroAgrupacion As cls_terceroagrupacion_ In obj_banco.tercero.terceroagrupacion_.Items
                    Dim Elemento As New CustomListItem
                    Elemento.objeto = terceroAgrupacion
                    Elemento.text = terceroAgrupacion.ToString
                    liv_TerceroAgrupaciones.Items.Add(Elemento)
                Next
            End If
        End If

        obj_banco.tercero.terceroagrupacion_ = Nothing
        obj_banco.tercero.tercerosubcategoria_ = Nothing
        obj_banco.tercero.telefonoprimario = Nothing
        obj_banco.tercero.direccionprimario = Nothing
        obj_banco.tercero.emailprimario = Nothing
        obj_banco.tercero.usuario_ = Nothing
        obj_banco.tercero.email_ = Nothing
        obj_banco.tercero.tercerorelacion_ = Nothing
        obj_banco.tercero.telefono_ = Nothing
        obj_banco.tercero.direccion_ = Nothing
        obj_banco.tercero = Nothing


        btn_Registro.Enabled = True

        Me.Show()
    End Sub


    Public Overrides Function ComprobarDatos() As Boolean
        If Not cbo_TipoDocumento.Enabled Then
            ErrManagerShow("001008", Me)
            Return False
        End If
        If Not cbo_CondicionFiscal.Enabled Then
            ErrManagerShow("001007", Me)
            Return False
        End If
        If Not ControlarValidaciones() Then
            ErrManagerShow("000004", Me)
            Return False
        End If
        'REGISTROS DUPLICADOS----------------------------------------------------
        Dim col As New Collections.Generic.List(Of stc_campoValor)
        Dim comp1 As New stc_campoValor
        comp1.campo = "nombres"
        comp1.valor = txt_Nombres.Text
        col.Add(comp1)

        Dim comp2 As New stc_campoValor
        comp2.campo = "tipo"
        comp2.valor = cls_tercero_.enu_tipotercero.Banco

        col.Add(comp2)
        If ComprobarDuplicado("tercero_", col, "idtercero <> " & IIf(obj_banco.idtercero = 0, 0, txt_ID.Text)) Then
            ErrManagerShow("000010", Me, " Dato: Nombre")
            Return False
        End If
        'REGISTROS DUPLICADOS----------------------------------------------------
        Return True
    End Function

    Public Shadows Sub btn_Guardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Guardar.Click
        If ComprobarDatos() Then
            'Guardo banco------------------------------------------------------
            '----------------------------------------------------------------------

            'Guardo Tercero--------------------------------------------------------
            If IsNothing(obj_banco.tercero) Then
                obj_banco.tercero = New cls_tercero_
            End If
            obj_banco.tercero.tipo = cls_tercero_.enu_tipotercero.banco
            obj_banco.tercero.nombres = txt_Nombres.Text
            obj_banco.tercero.apellido = txt_Apellido.Text
            obj_banco.tercero.numerofiscal = txt_NumeroFiscal.Text
            obj_banco.tercero.numeroducumento = txt_NumeroDocumento.Text
            obj_banco.tercero.web = txt_SitioWeb.Text
            obj_banco.tercero.observaciones = txt_Observaciones.Text
            obj_banco.tercero.notas = txt_Notas.Text
            obj_banco.tercero.idcondicioniva = cbo_CondicionFiscal.EditValue
            obj_banco.tercero.idtipodocumento = cbo_TipoDocumento.EditValue
            obj_banco.tercero.subcodigo1 = txt_subcodigo1.Text
            obj_banco.tercero.subcodigo2 = txt_subcodigo2.Text
            obj_banco.tercero.subcodigo3 = txt_subcodigo3.Text
            '---------------------------------------------------------------------

            'Guardo Direcciones---------------------------------------------------
            If IsNothing(obj_banco.tercero.direccion_) Then
                obj_banco.tercero.direccion_ = New cls_direccion_
            End If
            If IsNothing(obj_banco.tercero.direccion_.Items) Then
                obj_banco.tercero.direccion_.Items = New Collections.Generic.List(Of cls_direccion_)
            End If
            obj_banco.tercero.direccion_.Items = New Collections.Generic.List(Of cls_direccion_)
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Direcciones.Items
                obj_banco.tercero.direccion_.Items.Add(Elemento.Value.objeto)
            Next
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Direcciones.Tag
                If CType(Elemento.Value.objeto, cls_direccion_).iddireccion <> 0 Then
                    CType(Elemento.Value.objeto, cls_direccion_).Eliminar(CType(Elemento.Value.objeto, cls_direccion_).iddireccion)
                End If
            Next
            '---------------------------------------------------------------------

            'Guardo Telefonos------------------------------------------------------
            If IsNothing(obj_banco.tercero.telefono_) Then
                obj_banco.tercero.telefono_ = New cls_telefono_
            End If
            If IsNothing(obj_banco.tercero.telefono_.Items) Then
                obj_banco.tercero.telefono_.Items = New Collections.Generic.List(Of cls_telefono_)
            End If
            obj_banco.tercero.telefono_.Items = New Collections.Generic.List(Of cls_telefono_)
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Telefonos.Items
                obj_banco.tercero.telefono_.Items.Add(Elemento.Value.objeto)
            Next
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Telefonos.Tag
                If CType(Elemento.Value.objeto, cls_telefono_).idtelefono <> 0 Then
                    CType(Elemento.Value.objeto, cls_telefono_).Eliminar(CType(Elemento.Value.objeto, cls_telefono_).idtelefono)
                End If
            Next
            '---------------------------------------------------------------------

            'Guardo Relaciones------------------------------------------------------
            If IsNothing(obj_banco.tercero.tercerorelacion_) Then
                obj_banco.tercero.tercerorelacion_ = New cls_tercerorelacion_
            End If
            If IsNothing(obj_banco.tercero.tercerorelacion_.Items) Then
                obj_banco.tercero.tercerorelacion_.Items = New Collections.Generic.List(Of cls_tercerorelacion_)
            End If
            obj_banco.tercero.tercerorelacion_.Items = New Collections.Generic.List(Of cls_tercerorelacion_)
            For Each Elemento As CustomListItem In liv_TerceroRelaciones.Items
                obj_banco.tercero.tercerorelacion_.Items.Add(Elemento.objeto)
            Next
            For Each Elemento As CustomListItem In liv_TerceroRelaciones.Tag
                If CType(Elemento.objeto, cls_tercerorelacion_).idtercerorelacion <> 0 Then
                    CType(Elemento.objeto, cls_tercerorelacion_).Eliminar(CType(Elemento.objeto, cls_tercerorelacion_).idtercerorelacion)
                End If
            Next
            '-----------------------------------------------------------------------

            'Guardo Emails------------------------------------------------------
            If IsNothing(obj_banco.tercero.email_) Then
                obj_banco.tercero.email_ = New cls_email_
            End If
            If IsNothing(obj_banco.tercero.email_.Items) Then
                obj_banco.tercero.email_.Items = New Collections.Generic.List(Of cls_email_)
            End If
            obj_banco.tercero.email_.Items = New Collections.Generic.List(Of cls_email_)
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Emails.Items
                obj_banco.tercero.email_.Items.Add(Elemento.Value.objeto)
            Next
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Emails.Tag
                If CType(Elemento.Value.objeto, cls_email_).idemail <> 0 Then
                    CType(Elemento.Value.objeto, cls_email_).Eliminar(CType(Elemento.Value.objeto, cls_email_).idemail)
                End If
            Next
            '-----------------------------------------------------------------------

            'Guardo usuarios------------------------------------------------------
            If IsNothing(obj_banco.tercero.usuario_) Then
                obj_banco.tercero.usuario_ = New cls_usuario_
            End If
            If IsNothing(obj_banco.tercero.usuario_.Items) Then
                obj_banco.tercero.usuario_.Items = New Collections.Generic.List(Of cls_usuario_)
            End If
            obj_banco.tercero.usuario_.Items = New Collections.Generic.List(Of cls_usuario_)
            For Each Elemento As CustomListItem In liv_Usuarios.Items
                obj_banco.tercero.usuario_.Items.Add(Elemento.objeto)
            Next
            For Each Elemento As CustomListItem In liv_Usuarios.Tag
                If CType(Elemento.objeto, cls_usuario_).idusuario <> 0 Then
                    CType(Elemento.objeto, cls_usuario_).Eliminar(CType(Elemento.objeto, cls_usuario_).idusuario)
                End If
            Next
            '-----------------------------------------------------------------------

            'Guardo subcategorias------------------------------------------------------
            If IsNothing(obj_banco.tercero.tercerosubcategoria_) Then
                obj_banco.tercero.tercerosubcategoria_ = New cls_tercerosubcategoria_
            End If
            If IsNothing(obj_banco.tercero.tercerosubcategoria_.Items) Then
                obj_banco.tercero.tercerosubcategoria_.Items = New Collections.Generic.List(Of cls_tercerosubcategoria_)
            End If
            obj_banco.tercero.tercerosubcategoria_.Items = New Collections.Generic.List(Of cls_tercerosubcategoria_)
            For Each Elemento As CustomListItem In liv_TerceroSubCategorias.Items
                obj_banco.tercero.tercerosubcategoria_.Items.Add(Elemento.objeto)
            Next
            For Each Elemento As CustomListItem In liv_TerceroSubCategorias.Tag
                If CType(Elemento.objeto, cls_tercerosubcategoria_).idtercerosubcategoria <> 0 Then
                    CType(Elemento.objeto, cls_tercerosubcategoria_).Eliminar(CType(Elemento.objeto, cls_tercerosubcategoria_).idtercerosubcategoria)
                End If
            Next
            '---------------------------------------------------------------------


            'Guardo Agrupaciones------------------------------------------------------
            If IsNothing(obj_banco.tercero.terceroagrupacion_) Then
                obj_banco.tercero.terceroagrupacion_ = New cls_terceroagrupacion_
            End If
            If IsNothing(obj_banco.tercero.terceroagrupacion_.Items) Then
                obj_banco.tercero.terceroagrupacion_.Items = New Collections.Generic.List(Of cls_terceroagrupacion_)
            End If
            obj_banco.tercero.terceroagrupacion_.Items = New Collections.Generic.List(Of cls_terceroagrupacion_)
            For Each Elemento As CustomListItem In liv_TerceroAgrupaciones.Items
                obj_banco.tercero.terceroagrupacion_.Items.Add(Elemento.objeto)
            Next
            For Each Elemento As CustomListItem In liv_TerceroAgrupaciones.Tag
                If CType(Elemento.objeto, cls_terceroagrupacion_).idterceroagrupacion <> 0 Then
                    CType(Elemento.objeto, cls_terceroagrupacion_).Eliminar(CType(Elemento.objeto, cls_terceroagrupacion_).idterceroagrupacion)
                End If
            Next
            '---------------------------------------------------------------------

            If txt_ID.Text = "" Then
                obj_banco.Nuevo(True)
                If frm_listado.Visible Then
                    ulg_row = CType(frm_listado, xtf_LISTADObanco_).AgregarItem(obj_banco)
                End If
                Modificar(obj_banco, frm_listado, ulg_row)
            Else
                obj_banco.Modificar()
                If frm_listado.Visible Then
                    frm_listado.ModificarItem(obj_banco, ulg_row)
                End If
                Modificar(obj_banco, frm_listado, ulg_row)
            End If
            flg_Modificado = False : btn_Guardar.Enabled = False : bbi_guardar.Enabled = False
        End If
    End Sub

    Private Sub btn_Registro_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Registro.Click
        If Not IsNothing(obj_banco.tercero.registro) Then
            Dim ABMRegistro As New xtf_ABMRegistro(obj_banco.tercero.registro)
            If ABMRegistro.ShowDialog() = Windows.Forms.DialogResult.OK Then
                flg_Modificado = True
            End If
        End If
    End Sub

    Private Sub btn_Cerrar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cerrar.Click
        If flg_Modificado Then
            bol_comprobarCerrado = False
            Select Case ErrManagerShow("000001", Me)
                Case Windows.Forms.DialogResult.Yes
                    If ComprobarDatos() Then
                        btn_Guardar_Click(Nothing, Nothing)
                    Else
                        Exit Sub
                    End If
                Case Windows.Forms.DialogResult.Cancel : bol_comprobarCerrado = True
                    Exit Sub
            End Select
        End If
        Me.Dispose()
    End Sub

#Region "Direcciones"

    Private Sub liv_Direcciones_ItemDoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles liv_Direcciones.DoubleClick
        tsb_DireccionesModificar.PerformClick()
    End Sub

    Private Sub tsb_DireccionesNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_DireccionesNuevo.Click
        Dim ABMDireccion As New xtf_ABMdireccion
        If ABMDireccion.ShowDialog = Windows.Forms.DialogResult.OK Then
            liv_Direcciones.BeginUpdate()
            Dim Item As New DevExpress.XtraEditors.Controls.ImageListBoxItem
            Dim Elemento As New CustomListItem
            Elemento.objeto = ABMDireccion.obj_direccion
            Elemento.text = ABMDireccion.obj_direccion.ToString
            Item.Value = Elemento
            liv_Direcciones.Items.Add(Item)
            liv_Direcciones.EndUpdate()
        End If
    End Sub

    Private Sub tsb_DireccionesModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_DireccionesModificar.Click
        If liv_Direcciones.SelectedItems.Count > 0 Then
            Dim ABMDireccion As New xtf_ABMdireccion
            ABMDireccion.Modificar(liv_Direcciones.SelectedItems(0).value.objeto)
            If ABMDireccion.ShowDialog = Windows.Forms.DialogResult.OK Then
                liv_Direcciones.BeginUpdate()
                liv_Direcciones.SelectedItems(0).value.objeto = ABMDireccion.obj_direccion
                liv_Direcciones.SelectedItems(0).value.text = ABMDireccion.obj_direccion.ToString
                liv_Direcciones.EndUpdate()
            End If
        End If
    End Sub

    Private Sub tsb_DireccionesEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_DireccionesEliminar.Click
        If liv_Direcciones.SelectedItems.Count > 0 Then
            liv_Direcciones.BeginUpdate()
            Dim Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem
            Elemento = liv_Direcciones.SelectedItems(0)
            liv_Direcciones.Items.Remove(Elemento)
            liv_Direcciones.Tag.add(Elemento)
            liv_Direcciones.EndUpdate()
        End If
    End Sub

    Private Sub tsb_DireccionesDefecto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_DireccionesDefecto.Click
        If liv_Direcciones.SelectedItems.Count > 0 Then
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Direcciones.Items
                CType(Elemento.Value.objeto, cls_direccion_).primario = False
                Elemento.ImageIndex = -1
            Next
            CType(liv_Direcciones.SelectedItems(0).Value.objeto, cls_direccion_).primario = True
            liv_Direcciones.SelectedItems(0).imageindex = 0
            If Not IsNothing(CType(liv_Direcciones.SelectedItems(0).Value.objeto, cls_direccion_).pais) Then
                If Not IsNothing(CType(liv_Direcciones.SelectedItems(0).Value.objeto, cls_direccion_).pais.siglafiscal) Then
                    txt_SiglaFiscal.Text = CType(liv_Direcciones.SelectedItems(0).Value.objeto, cls_direccion_).pais.siglafiscal.ToString
                End If
            Else
                txt_SiglaFiscal.Text = Nothing
            End If
        End If
    End Sub
#End Region

#Region "Emails"
    Private Sub liv_emails_ItemDoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles liv_Emails.DoubleClick
        tsb_EmailsModificar.PerformClick()
    End Sub

    Private Sub tsb_EmailsNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_EmailsNuevo.Click
        Dim ABMemail As New xtf_ABMemail
        If ABMemail.ShowDialog = Windows.Forms.DialogResult.OK Then
            liv_Emails.BeginUpdate()
            Dim Item As New DevExpress.XtraEditors.Controls.ImageListBoxItem
            Dim Elemento As New CustomListItem
            Elemento.objeto = ABMemail.obj_email
            Elemento.text = ABMemail.obj_email.ToString
            Item.ImageIndex = -1
            Item.Value = Elemento
            liv_Emails.Items.Add(Item)
            liv_Emails.EndUpdate()
        End If
    End Sub

    Private Sub tsb_EmailsModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_EmailsModificar.Click
        If liv_Emails.SelectedItems.Count > 0 Then
            Dim ABMemail As New xtf_ABMemail
            ABMemail.Modificar(CType(liv_Emails.SelectedItems(0).value, CustomListItem).objeto)
            If ABMemail.ShowDialog = Windows.Forms.DialogResult.OK Then
                liv_Emails.BeginUpdate()
                liv_Emails.SelectedItems(0).value.objeto = ABMemail.obj_email
                liv_Emails.SelectedItems(0).value.text = ABMemail.obj_email.ToString
                liv_Emails.EndUpdate()
            End If
        End If
    End Sub

    Private Sub tsb_EmailsEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_EmailsEliminar.Click
        If liv_Emails.SelectedItems.Count > 0 Then
            liv_Emails.BeginUpdate()
            Dim Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem
            Elemento = liv_Emails.SelectedItems(0)
            liv_Emails.Items.Remove(Elemento)
            liv_Emails.Tag.add(Elemento)
            liv_Emails.EndUpdate()
        End If
    End Sub

    Private Sub tsb_EmailsDefecto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_EmailsDefecto.Click
        If liv_Emails.SelectedItems.Count > 0 Then
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Emails.Items
                CType(Elemento.Value.objeto, cls_email_).primario = False
                Elemento.ImageIndex = -1
            Next
            CType(liv_Emails.SelectedItems(0).Value.objeto, cls_email_).primario = True
            liv_Emails.SelectedItems(0).ImageIndex = 0
        End If
    End Sub
#End Region

#Region "Telefonos"

    Private Sub liv_Telefonos_ItemDoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles liv_Telefonos.DoubleClick
        tsb_TelefonosModificar.PerformClick()
    End Sub

    Private Sub tsb_TelefonosNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_TelefonosNuevo.Click
        Dim ABMtelefono As New xtf_ABMtelefono
        If ABMtelefono.ShowDialog = Windows.Forms.DialogResult.OK Then
            liv_Telefonos.BeginUpdate()
            Dim Elemento As New CustomListItem
            Dim Item As New DevExpress.XtraEditors.Controls.ImageListBoxItem
            Elemento.objeto = ABMtelefono.obj_telefono
            Elemento.text = ABMtelefono.obj_telefono.ToString
            Item.ImageIndex = -1
            Item.Value = Elemento
            liv_Telefonos.Items.Add(Item)
            liv_Telefonos.EndUpdate()
        End If
    End Sub

    Private Sub tsb_TelefonosModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_TelefonosModificar.Click
        If liv_Telefonos.SelectedItems.Count > 0 Then
            Dim ABMtelefono As New xtf_ABMtelefono
            ABMtelefono.Modificar(liv_Telefonos.SelectedItems(0).value.objeto)
            If ABMtelefono.ShowDialog = Windows.Forms.DialogResult.OK Then
                liv_Telefonos.BeginUpdate()
                liv_Telefonos.SelectedItems(0).value.objeto = ABMtelefono.obj_telefono
                liv_Telefonos.SelectedItems(0).value.text = ABMtelefono.obj_telefono.ToString
                liv_Telefonos.EndUpdate()
            End If
        End If
    End Sub


    Private Sub tsb_TelefonosEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_TelefonosEliminar.Click
        If liv_Telefonos.SelectedItems.Count > 0 Then
            liv_Telefonos.BeginUpdate()
            Dim Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem
            Elemento = liv_Telefonos.SelectedItems(0)
            liv_Telefonos.Items.Remove(Elemento)
            liv_Telefonos.Tag.add(Elemento)
            liv_Telefonos.EndUpdate()
        End If
    End Sub

    Private Sub tsb_TelefonosDefecto_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_TelefonosDefecto.Click
        If liv_Telefonos.SelectedItems.Count > 0 Then
            For Each Elemento As DevExpress.XtraEditors.Controls.ImageListBoxItem In liv_Telefonos.Items
                CType(Elemento.Value.objeto, cls_telefono_).primario = False
                Elemento.ImageIndex = -1
            Next
            CType(liv_Telefonos.SelectedItems(0).Value.objeto, cls_telefono_).primario = True
            liv_Telefonos.SelectedItems(0).ImageIndex = 0
        End If
    End Sub
#End Region

#Region "Relacion"

    Private Sub liv_TerceroRelacion_ItemDoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles liv_TerceroRelaciones.DoubleClick
        tsb_ContactoModificar.PerformClick()
    End Sub

    Private Sub tsb_ContactoNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_ContactoNuevo.Click
        If liv_TerceroRelaciones.SelectedItems.Count = 0 Then
            Dim ABMtercerorelacion As New xtf_ABMtercerorelacion
            If ABMtercerorelacion.ShowDialog = Windows.Forms.DialogResult.OK Then
                liv_TerceroRelaciones.BeginUpdate()
                Dim Elemento As New CustomListItem
                Elemento.objeto = ABMtercerorelacion.obj_tercerorelacion
                Elemento.text = ABMtercerorelacion.obj_tercerorelacion.ToString
                liv_TerceroRelaciones.Items.Clear()
                liv_TerceroRelaciones.Items.Add(Elemento)
                liv_TerceroRelaciones.EndUpdate()
            End If
        Else
            liv_TerceroRelaciones.SelectedIndex = 0
            tsb_ContactoModificar_Click(Nothing, Nothing)
        End If
    End Sub

    Private Sub tsb_ContactoModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_ContactoModificar.Click
        If liv_TerceroRelaciones.SelectedItems.Count > 0 Then
            Dim ABMtercerorelacion As New xtf_ABMtercerorelacion
            ABMtercerorelacion.Modificar(liv_TerceroRelaciones.SelectedItems(0).objeto)
            If ABMtercerorelacion.ShowDialog = Windows.Forms.DialogResult.OK Then
                liv_TerceroRelaciones.BeginUpdate()
                liv_TerceroRelaciones.SelectedItems(0).objeto = ABMtercerorelacion.obj_tercerorelacion
                liv_TerceroRelaciones.SelectedItems(0).text = ABMtercerorelacion.obj_tercerorelacion.ToString
                liv_TerceroRelaciones.EndUpdate()
            End If
        End If
    End Sub

    Private Sub tsb_ContactoEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_ContactoEliminar.Click
        If liv_TerceroRelaciones.SelectedItems.Count > 0 Then
            liv_TerceroRelaciones.BeginUpdate()
            Dim Elemento As CustomListItem
            Elemento = liv_TerceroRelaciones.SelectedItems(0)
            liv_TerceroRelaciones.Items.Remove(Elemento)
            liv_TerceroRelaciones.Tag.add(Elemento)
            liv_TerceroRelaciones.EndUpdate()
        End If
    End Sub
#End Region

#Region "Usuario"
    Private Sub liv_usuario_ItemDoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles liv_Usuarios.DoubleClick
        tsb_UsuarioModificar.PerformClick()
    End Sub

    Private Sub tsb_UsuarioNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_UsuarioNuevo.Click
        If liv_Usuarios.SelectedItems.Count = 0 Then
            Dim ABMusuario As New xtf_ABMusuario2
            If ABMusuario.ShowDialog = Windows.Forms.DialogResult.OK Then
                liv_Usuarios.BeginUpdate()
                Dim Elemento As New CustomListItem
                Elemento.objeto = ABMusuario.obj_usuario
                Elemento.text = ABMusuario.obj_usuario.ToString
                liv_Usuarios.Items.Clear()
                liv_Usuarios.Items.Add(Elemento)
                liv_Usuarios.EndUpdate()
            End If
        Else
            liv_Usuarios.SelectedIndex = 0
            tsb_UsuarioModificar_Click(Nothing, Nothing)
        End If
    End Sub

    Private Sub tsb_UsuarioModificar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_UsuarioModificar.Click
        If liv_Usuarios.SelectedItems.Count > 0 Then
            Dim ABMusuario As New xtf_ABMusuario2
            ABMusuario.Modificar(liv_Usuarios.SelectedItems(0).objeto)
            If ABMusuario.ShowDialog = Windows.Forms.DialogResult.OK Then
                liv_Usuarios.BeginUpdate()
                liv_Usuarios.SelectedItems(0).objeto = ABMusuario.obj_usuario
                liv_Usuarios.SelectedItems(0).text = ABMusuario.obj_usuario.ToString
                liv_Usuarios.EndUpdate()
            End If
        End If
    End Sub

    Private Sub tsb_UsuarioEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles tsb_UsuarioEliminar.Click
        If liv_Usuarios.SelectedItems.Count > 0 Then
            liv_Usuarios.BeginUpdate()
            Dim Elemento As CustomListItem
            Elemento = liv_Usuarios.SelectedItems(0)
            liv_Usuarios.Items.Remove(Elemento)
            liv_Usuarios.Tag.add(Elemento)
            liv_Usuarios.EndUpdate()
        End If
    End Sub
#End Region

#Region "Agrupaciones"
    Private Sub btn_AgregarA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_AgregarA.Click
        For i As Integer = 0 To liv_Agrupaciones.SelectedItems.Count - 1
            Dim Elemento As New CustomListItem '= liv_Agrupaciones.SelectedItems(0)
            Elemento.objeto = New cls_terceroagrupacion_
            CType(Elemento.objeto, cls_terceroagrupacion_).idagrupacion = CType(CType(liv_Agrupaciones.SelectedItems(i), CustomListItem).objeto, cls_agrupacion_).idAgrupacion
            Elemento.text = Elemento.objeto.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_TerceroAgrupaciones.Items
                Dim terceroAgrupacion As cls_terceroagrupacion_ = customitem.objeto
                If terceroAgrupacion.idagrupacion = CType(Elemento.objeto, cls_terceroagrupacion_).idagrupacion Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_TerceroAgrupaciones.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_AgregarTodosA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_AgregarTodosA.Click
        For i As Integer = 0 To liv_Agrupaciones.Items.Count - 1
            Dim Elemento As New CustomListItem '= liv_Agrupaciones.SelectedItems(0)
            Elemento.objeto = New cls_terceroagrupacion_
            CType(Elemento.objeto, cls_terceroagrupacion_).idagrupacion = CType(CType(liv_Agrupaciones.Items(i), CustomListItem).objeto, cls_agrupacion_).idagrupacion
            Elemento.text = Elemento.objeto.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_TerceroAgrupaciones.Items
                Dim terceroAgrupacion As cls_terceroagrupacion_ = customitem.objeto
                If terceroAgrupacion.idagrupacion = CType(Elemento.objeto, cls_terceroagrupacion_).idagrupacion Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_TerceroAgrupaciones.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_QuitarA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_QuitarA.Click
        If liv_TerceroAgrupaciones.SelectedItems.Count > 0 Then
            For i As Integer = liv_TerceroAgrupaciones.SelectedItems.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_TerceroAgrupaciones.SelectedItems(i)
                liv_TerceroAgrupaciones.Items.Remove(Elemento)
                liv_TerceroAgrupaciones.Tag.add(Elemento)
            Next
        End If
    End Sub

    Private Sub btn_QuitarTodosA_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_QuitarTodosA.Click
        If liv_TerceroAgrupaciones.Items.Count > 0 Then
            For i As Integer = liv_TerceroAgrupaciones.Items.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_TerceroAgrupaciones.Items(i)
                liv_TerceroAgrupaciones.Items.Remove(Elemento)
                liv_TerceroAgrupaciones.Tag.add(Elemento)
            Next
        End If
    End Sub
#End Region

    Private Sub liv_Categorias_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles liv_Categorias.SelectedIndexChanged
        CargarSubCategoria_()
    End Sub

    Private Sub btn_Agregar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Agregar.Click
        For i As Integer = 0 To liv_SubCategorias.SelectedItems.Count - 1
            Dim Elemento As New CustomListItem '= liv_SubCategorias.SelectedItems(0)
            Elemento.objeto = New cls_tercerosubcategoria_
            CType(Elemento.objeto, cls_tercerosubcategoria_).idsubcategoria = CType(CType(liv_SubCategorias.SelectedItems(i), CustomListItem).objeto, cls_subcategoria_).idsubcategoria
            Elemento.text = Elemento.objeto.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_TerceroSubCategorias.Items
                Dim tercerosubcategoria As cls_tercerosubcategoria_ = customitem.objeto
                If tercerosubcategoria.idsubcategoria = CType(Elemento.objeto, cls_tercerosubcategoria_).idsubcategoria Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_TerceroSubCategorias.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_AgregarTodos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_AgregarTodos.Click
        For i As Integer = 0 To liv_SubCategorias.Items.Count - 1
            Dim Elemento As New CustomListItem '= liv_SubCategorias.SelectedItems(0)
            Elemento.objeto = New cls_tercerosubcategoria_
            CType(Elemento.objeto, cls_tercerosubcategoria_).idsubcategoria = CType(CType(liv_SubCategorias.Items(i), CustomListItem).objeto, cls_subcategoria_).idsubcategoria
            Elemento.text = Elemento.objeto.ToString
            Dim flag As Boolean = False
            For Each customitem As CustomListItem In liv_TerceroSubCategorias.Items
                Dim tercerosubcategoria As cls_tercerosubcategoria_ = customitem.objeto
                If tercerosubcategoria.idsubcategoria = CType(Elemento.objeto, cls_tercerosubcategoria_).idsubcategoria Then
                    flag = True
                End If
            Next
            If flag = False Then
                liv_TerceroSubCategorias.Items.Add(Elemento)
            End If
        Next
    End Sub

    Private Sub btn_Quitar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Quitar.Click
        If liv_TerceroSubCategorias.SelectedItems.Count > 0 Then
            For i As Integer = liv_TerceroSubCategorias.SelectedItems.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_TerceroSubCategorias.SelectedItems(i)
                liv_TerceroSubCategorias.Items.Remove(Elemento)
                liv_TerceroSubCategorias.Tag.add(Elemento)
            Next
        End If
    End Sub

    Private Sub btn_QuitarTodos_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_QuitarTodos.Click
        If liv_TerceroSubCategorias.Items.Count > 0 Then
            For i As Integer = liv_TerceroSubCategorias.Items.Count - 1 To 0 Step -1
                Dim Elemento As CustomListItem
                Elemento = liv_TerceroSubCategorias.Items(i)
                liv_TerceroSubCategorias.Items.Remove(Elemento)
                liv_TerceroSubCategorias.Tag.add(Elemento)
            Next
        End If
    End Sub

    Private Sub btn_Acceso_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Acceso.Click
        If ComprobarPermiso("004001006") Then
            Dim obj_ABMconfig_acceso As New xtf_ABMconfig_acceso(obj_banco.idtercero)
            obj_ABMconfig_acceso.ShowDialog()
        End If
    End Sub
End Class